package cn.bonoon.kernel.web.handlers;

import java.lang.reflect.AnnotatedElement;

import cn.bonoon.kernel.util.MD5Util;
import cn.bonoon.kernel.web.annotations.DialogId;

/**
 * <pre>
 * 
 * </pre>
 * @author jackson
 *
 */
public abstract class AbstractExecuteHandler implements ExecutableHandler{

	/**
	 * 这里生成的是相对路径
	 */
	protected String url;
	
//	protected boolean error;
//	/**
//	 * <pre>
//	 * 用于限制范围的定义，默认情况下，域限制为ownerid，专有数据的限制为createrid
//	 * </pre>
//	 */
//	protected String scopeField;
	/**
	 * 每一个功能的唯一值
	 */
	protected String key;
	
	protected AbstractExecuteHandler(AnnotatedElement ae, String ext){
		//没有被注册的情况
		if(null != ae){
			DialogId di = ae.getAnnotation(DialogId.class);
			if(null != di){
				this.key = di.value();
			}else{
				this.key = MD5Util.randomMD5String();
			}
		}else{
			this.key = MD5Util.randomMD5String();
		}
		this.url = key + "!exe." + ext;
	}

	protected AbstractExecuteHandler(String ext){
		//没有被注册的情况
		this.key = MD5Util.randomMD5String();
		this.url = key + "!exe." + ext;
	}
	
	@Override
	public String getKey() {
		return key;
	}
	
	@Override
	public String getUrl() {
		return url;
	}
	
	@Override
	public Object buildParams() {
		return null;
	}
}
